Skip to content

Conversation

@joecorall
Copy link
Contributor

@joecorall joecorall commented Jun 20, 2025

This PR started as just removing docker compose profiles from docker-compose.yaml but has morphed into basically a rewrite of ISLE Site Template...

The original motivating factor for removing profiles was to make production and dev environments as identical as possible. The way we're using profiles (same services with different config set using profiles) is antithetical to that general idea. Having profiles was arguably necessary when we had codeserver, but now that codeserver has been removed there's little value to splitting our docker-compose.yaml into profiles

Related links

  • Current setup does not use secrets to set generated secrets/passwords when using the dev profile. This has tripped me up before and someone else raised the issue

Additional changes

Default HTTP

While I was at it I also made a few more changes to make getting started easier. Namely, I made the default dev environment use http rather than https. We've had quite a few GitHub issues and Slack messages related to mkcert that forcing TLS for dev environments just doesn't seem to be making the DX any better. Additionally, some folks have TLS terminated in front of ISLE (having ISLE act as a backend on a frontend reverse proxy) so having better support around switching from TLS to HTTP seemed warranted. To help with this I added some new make commands to allow switching between http, tls-mkcert, and tls-acme easier.

Default domain

Using http also forced moving away from islandora.dev... HSTS rules in Google Chrome in particular do not allow accessing *.dev domains over http.

traefik labels to YML

I also moved the traefik labels from docker compose and into dynamic template to make these different options easier to configure.

init service

Instead of running the generate-secrets.sh and generate.certs.sh on the host machine, I made an init service that runs this using islandora/base.

smart port allocation

make up tries to bring up ISLE on port 80/443 but if those ports are bound by some other process than the compose project it tries to bind to another port. The URL is then automatically opened in the web browser.

bind mount the entire drupal root

Instead of bind mounting subsets of the host's filesystem into the container's /var/www/drupal directory, have make build handle syncing between the two to make for a better DX

Composite Action

The integration test ran in GitHub Actions is now a composite action so we can run the same action in other repos to easily setup a site template instance for testing.

Batteries included

Instead of a setup script, just keep this repo up to date with islandora-starter-site. This will allow us to add the green "use this template" button on this repo and people will be able to copy isle-site-template with the latest islandora-starter-site into their own github repo (as opposed to forking). This makes setting up a site easier. Just copy this template repo (or checkout this repo) and run make init up

make status

Added a command to clue folks into common misconfiguration settings

Testing

Checkout this PR and run

make up

and you should have your own copy of isle-site-template

Before merging

This is a big change and if approved will need a lot of docs updates (in this repo's README and in islandora/documentation). As well as updating GitHub Actions for those that leverage site template (namely islandora-starter-site and workbench). I'll do this after this PR gets reviewed. And we probably could turn this repo into a template repository

@joecorall joecorall changed the title remove dev/prod profiles remove dev/prod profiles in favor of compose override file Jun 21, 2025
@joecorall joecorall force-pushed the rm-profiles branch 4 times, most recently from f70605a to 35ec8aa Compare June 21, 2025 08:52
@joecorall joecorall changed the title remove dev/prod profiles in favor of compose override file Replace dev/prod profiles with compose override file Jun 23, 2025
@joecorall joecorall closed this Jul 16, 2025
@joecorall joecorall deleted the rm-profiles branch July 16, 2025 16:56
@joecorall joecorall restored the rm-profiles branch December 4, 2025 20:56
@joecorall joecorall reopened this Dec 4, 2025
@joecorall joecorall marked this pull request as ready for review December 4, 2025 21:07
@aOelschlager
Copy link
Contributor

aOelschlager commented Dec 15, 2025

I've been testing this and I had to run docker compose up -d a few times for the site to come up. The drupal container fails running docker compose up the first time. Then I run it again and drupal starts as well as solr. I think that issue is that solr is not starting the first time around and that is what is making the drupal container fail. Update: the docker compose file says solr depends on a healthy drupal container so maybe the failure is caused by something else. Currently I can't log in to drupal as admin (using password.) So I tried several of the passwords in the secrets folder (including the drupal default account password) and nothing will work. I will try to debug more tomorrow.

@joecorall joecorall force-pushed the rm-profiles branch 6 times, most recently from 93c9c6c to 43d08a4 Compare December 18, 2025 21:11
@joecorall joecorall changed the title Replace dev/prod profiles with compose override file Default dev to http. Replace dev/prod profiles with compose override file Dec 18, 2025
and add make commands to switch between http, https-mkcert, and https-acme
@joecorall joecorall force-pushed the rm-profiles branch 2 times, most recently from 9ee3b9e to cd81247 Compare December 18, 2025 22:11
@joecorall
Copy link
Contributor Author

joecorall commented Jan 11, 2026

Great!

Documenting yq as a requirements is probably the only blocker.

As mentioned above, since the init scripts that call generate secrets/certs runs in a new init service, the only host dependencies are docker and make. Make is technically optionally if you don't want to utilize those helper utilities

@aOelschlager
Copy link
Contributor

aOelschlager commented Jan 13, 2026

Just tested this again and I'm getting an error with the drupal container:
✘ Container isle-site-template-drupal-1 Error dependency drupal failed to start 0.5s dependency failed to start: container isle-site-template-drupal-1 is unhealthy make: *** [Makefile:42: up] Error 1
I tried to run docker compose down then dock compose up -d but the same error occurs.

Docker ps shows that there is no solr container which makes sense since drupal is marked unhealthy.

@aOelschlager
Copy link
Contributor

I ran make status:
`--- General Status ---
Site mode: Development
COMPOSE_PROJECT_NAME: isle-site-template
ISLANDORA_TAG: 6.2.7
--- Configuration Warnings ---
Mount drupal codebase into drupal container for local development
For easier local development, you can link the sample docker-compose override file.
This allows you to mount your local Drupal codebase into the container.
To do so you can run the following command:
ln -s docker-compose.sample.yml docker-compose.override.yml
And then run make up for the changes to apply.

Update COMPOSE_PROJECT_NAME in .env
Docker Compose uses this name to prefix containers, networks, and volumes.
Running multiple projects with the same name on one machine will cause conflicts.
This is mostly relevant for development environments that may have multiple ISLE sites
But may also be a concern is a single host serves multiple ISLE sites.
Ensure this value is unique if you run other Docker Compose projects.

JWT key pair: Valid: secrets/JWT_PUBLIC_KEY and secrets/JWT_PRIVATE_KEY match

--- Traefik Status ---

HTTP port: 80
HTTPS port: 443
DOMAIN: islandora.traefik.me
URL: http://islandora.traefik.me
TLS_PROVIDER: self-managed
Traefik container is not running.
Domain islandora.traefik.me resolves to: 127.0.0.1`

So I ran this:
ln -s docker-compose.sample.yml docker-compose.override.yml
Then make up again and it brought the site up.

I will test this again making the override file first then running make up.

@aOelschlager
Copy link
Contributor

I made a fresh isle-site-template and ran this:
ln -s docker-compose.sample.yml docker-compose.override.yml
Then make up and the drupal container was unhealthy. I shelled into the container and the permissions for all the files in the drupal folder were 100:nginx. I changed them to nginx:nginx and ran make up again and it worked.

@joecorall
Copy link
Contributor Author

joecorall commented Jan 13, 2026

@aOelschlager - are you on the latest version of this PR? docker-compose.sample.yml no longer exists. I think maybe some of the changes made in this PR since you last tested may be causing the failures. This should clear them up:

git reset --hard
git pull origin rm-profiles
make clean
make up

@joecorall
Copy link
Contributor Author

ah i neglected to update the helper text 364f760

@aOelschlager
Copy link
Contributor

I noticed that I should be using the dev as the override file shortly after my last comment. I tested it again and the drupal container was unhealthy. I shelled into the contain and the permissions were mixed. Some had nginx:nginx and some had 100:nginx. I'll test it again and see if that is reproducible.

@joecorall joecorall force-pushed the rm-profiles branch 7 times, most recently from dff5d05 to 2b39ed2 Compare January 13, 2026 20:26
Copy link
Contributor

@aOelschlager aOelschlager left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The UID removal fixed the permission issues I was having that prevented the Drupal container from running as noted in my previous comments. This works and was super easy to run!

@aOelschlager aOelschlager merged commit f2c107c into main Jan 13, 2026
3 checks passed
@aOelschlager aOelschlager deleted the rm-profiles branch January 13, 2026 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants